package com.xrkj.b2c.utils;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

/**
 * 短信工具类
 * @author 赵子靖
 * @since 2018年07月15日
 *
 */
public class ShortMessageUtils {

	/**
	 * 短信下发方法
	 * @param signStr
	 * @param contentStr
	 * @param urlStr
	 * @param username
	 * @param pwd
	 * @param mobile
	 * @return
	 * @throws IOException
	 */
	public static String sendMessageMethod(String signStr, String contentStr,
			String urlStr, String username, String pwd, String mobile) throws IOException {
		String content=contentStr;
		String sign=signStr;
		// 创建StringBuffer对象用来操作字符串
		StringBuffer sb = new StringBuffer(urlStr);
		// 向StringBuffer追加用户名
		sb.append("name="+username);
		// 向StringBuffer追加密码（登陆网页版，在管理中心--基本资料--接口密码，是28位的）
		sb.append("&pwd="+pwd);
		// 向StringBuffer追加手机号码
		sb.append("&mobile="+mobile);
		// 向StringBuffer追加消息内容转URL标准码
		sb.append("&content=" + URLEncoder.encode(content, "UTF-8"));
		// 追加发送时间，可为空，为空为及时发送
		sb.append("&stime=");
		// 加签名
		sb.append("&sign=" + URLEncoder.encode(sign, "UTF-8"));
		// type为固定值pt extno为扩展码，必须为数字 可为空
		sb.append("&type=pt&extno=");
		// 创建url对象
		// String temp = new String(sb.toString().getBytes("GBK"),"UTF-8");
		URL url = new URL(sb.toString());
		// 打开url连接
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();

		// 设置url请求方式 ‘get’ 或者 ‘post’
		connection.setRequestMethod("POST");
		// 发送
		InputStream is = url.openStream();
		// 转换返回值
		String returnStr = ShortMessageUtils.convertStreamToString(is);
		// 返回结果为‘0，20140009090990,1，提交成功’ 发送成功 具体见说明文档
		return returnStr;
	}
	
	/**
	 * 
	 * <B>方法名称：</B>发送短信<BR>
	 * <B>概要说明：</B><BR>
	 * @author perry
	 * @since 2017年9月7日 	
	 * @param mobile
	 * @param content
	 * @return
	 * @throws IOException
	 */
	public static boolean sendMessageMethod(String mobile,String content) throws IOException {
        String sign="【丰谊航空】";
        // 创建StringBuffer对象用来操作字符串
        StringBuffer sb = new StringBuffer("http://web.cr6868.com/asmx/smsservice.aspx?");
        // 向StringBuffer追加用户名
        sb.append("name=13618634463");
        // 向StringBuffer追加密码（登陆网页版，在管理中心--基本资料--接口密码，是28位的）
        sb.append("&pwd=0E317BC5F5E76A8CFFB7064BF964");
        // 向StringBuffer追加手机号码
        sb.append("&mobile="+mobile);
        // 向StringBuffer追加消息内容转URL标准码
        sb.append("&content=" + URLEncoder.encode(content, "UTF-8"));
        // 追加发送时间，可为空，为空为及时发送
        sb.append("&stime=");
        // 加签名
        sb.append("&sign=" + URLEncoder.encode(sign, "UTF-8"));
        // type为固定值pt extno为扩展码，必须为数字 可为空
        sb.append("&type=pt&extno=");
        // 创建url对象
        // String temp = new String(sb.toString().getBytes("GBK"),"UTF-8");
        URL url = new URL(sb.toString());
        // 打开url连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        // 设置url请求方式 ‘get’ 或者 ‘post’
        connection.setRequestMethod("POST");
        // 发送
        InputStream is = url.openStream();
        // 转换返回值
        String returnStr = ShortMessageUtils.convertStreamToString(is);
        // 返回结果为‘0，20140009090990,1，提交成功’ 发送成功 具体见说明文档
        if(!StringUtil.isEmpty(returnStr)){
            String messageCode=returnStr.substring(0,returnStr.indexOf(","));
            if("0".equals(messageCode)){
                return true;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
//		// 发送内容
//		String content = "【丰谊航空】测试信息";
//		String sign = "签名";
//		// 创建StringBuffer对象用来操作字符串
//		StringBuffer sb = new StringBuffer("http://web.cr6868.com/asmx/smsservice.aspx?");
//
//		// 向StringBuffer追加用户名
//		sb.append("name=13618634463");
//
//		// 向StringBuffer追加密码（登陆网页版，在管理中心--基本资料--接口密码，是28位的）
//		sb.append("&pwd=0E317BC5F5E76A8CFFB7064BF964");
//
//		// 向StringBuffer追加手机号码
//		sb.append("&mobile=18601344960");
//
//		// 向StringBuffer追加消息内容转URL标准码
//		sb.append("&content=" + URLEncoder.encode(content, "UTF-8"));
//
//		// 追加发送时间，可为空，为空为及时发送
//		sb.append("&stime=");
//
//		// 加签名
//		sb.append("&sign=" + URLEncoder.encode(sign, "UTF-8"));
//
//		// type为固定值pt extno为扩展码，必须为数字 可为空
//		sb.append("&type=pt&extno=");
//		// 创建url对象
//		// String temp = new String(sb.toString().getBytes("GBK"),"UTF-8");
//		System.out.println("sb:" + sb.toString());
//		URL url = new URL(sb.toString());
//
//		// 打开url连接
//		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//
//		// 设置url请求方式 ‘get’ 或者 ‘post’
//		connection.setRequestMethod("POST");
//
//		// 发送
//		InputStream is = url.openStream();
//
//		// 转换返回值
//		String returnStr = ShortMessageUtils.convertStreamToString(is);
//
//		// 返回结果为‘0，20140009090990,1，提交成功’ 发送成功 具体见说明文档
//		System.out.println(returnStr);
//		// 返回发送结果
	    System.out.println(sendMessageMethod("18601344960","有新短消息"));
	}

	/**
	 * 转换返回值类型为UTF-8格式.
	 * 
	 * @param is
	 * @return
	 */
	public static String convertStreamToString(InputStream is) {
		StringBuilder sb1 = new StringBuilder();
		byte[] bytes = new byte[4096];
		int size = 0;

		try {
			while ((size = is.read(bytes)) > 0) {
				String str = new String(bytes, 0, size, "UTF-8");
				sb1.append(str);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sb1.toString();
	}

}
